package cn.tedu.store.product.service;

import cn.tedu.store.commons.pojo.product.dto.SkuAddNewDTO;
import cn.tedu.store.commons.pojo.product.dto.SkuUpdateFullInfoDTO;
import cn.tedu.store.commons.pojo.product.vo.SkuListItemVO;
import cn.tedu.store.commons.pojo.product.vo.SkuStandardVO;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * Sku库存管理业务接口
 *
 * @author RelentlessFlow
 * @version 0.0.1
 */
@Transactional
public interface ISkuService {
    /**
     * 增加SKU信息
     *
     * @param skuAddNewDTO 新增的SKU对象
     */
    @Transactional
    void addNew(SkuAddNewDTO skuAddNewDTO);

    /**
     * 更新SKU的全部信息
     *
     * @param id                   被修改的SKU信息的id
     * @param skuUpdateFullInfoDTO 新的相关值的对象
     */
    @Transactional
    void updateFullInfoById(Long id, SkuUpdateFullInfoDTO skuUpdateFullInfoDTO);

    /**
     * 减少库存
     * @param id sku的id
     * @param stock 要减少的库存
     */
    void reduceStockById(Long id, Integer stock);

    /**
     * 根据SKU id查询SKU详情
     *
     * @param id SKU id
     * @return 匹配的SKU详情，如果没有匹配的数据，则返回null
     */
    SkuStandardVO getStandardById(Long id);

    /**
     * 查询某SPU下的SKU列表
     *
     * @param spuId    SPU id
     * @return SPU下的SKU的列表，如果无记录，则返回长度为0的列表
     */
    List<SkuListItemVO> list(Long spuId);
}
